package com.chapter10.single_;

/**
 * 单例模式：懒汉式
 * 不使用就不加载对象
 * */
public class SingleTon02 {
    public static void main(String[] args) {
        Cat cat = Cat.getCat();
        System.out.println(cat.toString());
    }
}
//希望在程序运行过程中，只能创建一个Cat对象
//使用单例模式-懒汉式
class Cat{
    private String name;
    private static Cat cat;
    //步骤
    //1.将构造器私有化
    //2.定义一个静态属性(static)对象,但不初始化对象
    //3.创建一个公共的static方法，返回一个Cat对象

    //调用静态属性时不会运行构造器
    private Cat(String name) {
        this.name = name;
    }

    public static Cat getCat() {
        if (cat == null){
            cat = new Cat("大橘");
        }
        return cat;
    }

    @Override
    public String toString() {
        return "Cat{" +
                "name='" + name + '\'' +
                '}';
    }
}